package com.wangjiang.mario.admin.system.domain.service;

import com.wangjiang.mario.admin.common.base.BaseService;
import com.wangjiang.mario.admin.common.output.MPage;
import com.wangjiang.mario.admin.system.domain.entity.UserEntity;
import com.wangjiang.mario.admin.system.object.token.TokenResult;
import com.wangjiang.mario.admin.system.object.user.*;


public interface UserService extends BaseService<UserEntity> {
    /**
     * 用户注册
     * @param user
     * @return
     */
    Boolean register(UserRegisterDto user);

    Boolean updateRegisterUser(UserRegisterDto userRegisterDto);


    /**
     * 用户登录
     * @param userLoginDto
     * @return
     */
    TokenResult login(UserLoginDto userLoginDto);
    /**
     * 添加模板
     * @return
     */
    // Integer create(UserEntity Entity);

    // List<UserEntity> findAll();

     UserEntity findUserByLoginName(String loginName);

    UserRoleMenuVo getMe();

    /**
     * 根据模板id生成模板
     * @param id
     * @return
     */
    // String generateById(String id);

    /**
     * 导入数据
     * @param file
     * @return
     */
    // List importData(MultipartFile file);

    /**
     * 更新数据
     */
    Boolean update(UserEntity userEntity);

    Boolean logout();

    /**
     * 关联查询分页
     * @param currentPage
     * @param pageSize
     * @param qo
     * @param userVoClass
     * @return
     */
    MPage<UserVo> relatedPage(Integer currentPage, Integer pageSize, UserQo qo, Class<UserVo> userVoClass);

    /**
     * 根据uuid 获取用户及用户的角色和菜单（权限列表)
     *
     * @param uuid
     * @return
     */
    UserRoleMenuVo getUserWithRoleAndMenuByUUid(String uuid);


}
